#ifndef __ming_fyp_render_Factory_h__
#define __ming_fyp_render_Factory_h__

//------------------------------------------------------------------------------
// header includes

struct IDirect3DDevice9;

//------------------------------------------------------------------------------
namespace ming
{
namespace fyp
{
namespace render
{
	//--------------------------------------------------------------------------
	class IRenderer;
	class TResourceFactory;
	class IRenderable;
	class IShader;
	class ITexture;
	class IRenderedTexture;

	//--------------------------------------------------------------------------
	IRenderer* CreateRenderer(IDirect3DDevice9 *device);

	TResourceFactory* CreateResFactory(
		IDirect3DDevice9 *device);

	IRenderable* CreateXMesh(
		const char* filename,
		TResourceFactory *resFactory);

	IShader* CreateShader(
		const char* filename,
		const char *technique,
		TResourceFactory *resFactory);

	ITexture* CreateTexture(
		const char* filename,
		TResourceFactory *resFactory);

	IRenderedTexture* CreateRenderedTexture(
		size_t format,
		size_t w,
		size_t h,
		bool hasDepth,
		TResourceFactory *resFactory);
	
	//--------------------------------------------------------------------------
}
}
}


#endif	//__ming_fyp_render_Factory_h__